Aula 24 - Finalizando (o mais importante) sobre o pacote flextable

Módulo 2: Trabalhando com dados

Carolina Musso

PROFESP, DEMSP, MS

Esta semana

Aula 22 - Trabalhando com datas

O pacote lubridate

Aula 23 - condicionamento

As funções if(), if_else() e case_when()

Aula 24 - Tabela

Mais sobre o pacote flextable: mesclar células e condicionamento

Leituras para aprofundamento

Dados de Hoje

  • Incrementando nosso código
paises <- c("Brazil", "Italy", "France", "Uruguay")

letalidade <- dados_covid %>% 
  filter(Country %in% paises, 
         New_cases>0) %>% 
  separate(Date_reported, c("Ano", "Mês", "Dia")) %>% 
  filter(Ano=="2023"|Ano=="2022") %>% 
  mutate(Country=case_when(
    Country=="Brazil" ~ "Brasil",
    Country=="Italy" ~ "Itália",
    Country=="France" ~ "França",
    Country=="Uruguay" ~ "Uruguai")) %>% 
  mutate(letalidade_diaria = New_deaths/New_cases*100)%>% 
   mutate(Continente = ifelse(Country=="Brasil"|Country=="Uruguai",
                              "América do Sul", "Europa")) %>% 
  group_by( Ano, Continente, Country) %>% 
  summarise(letalidade_media = mean(letalidade_diaria), 
            desvio_padrao = sd(letalidade_diaria ),
            Casos_maximo = max(New_cases),
            Obitos_maximo = max(New_deaths)) %>% 
  ungroup() %>% 
  mutate_if(is.numeric, ~format(., big.mark=".", decimal.mark=",", digits=2)) 
  

 letalidade
# A tibble: 8 × 7
  Ano   Continente     Country letalidade_media desvio_padrao Casos_maximo
  <chr> <chr>          <chr>   <chr>            <chr>         <chr>       
1 2022  América do Sul Brasil  0,70             0,53          "298.408"   
2 2022  América do Sul Uruguai 0,35             0,30          " 13.612"   
3 2022  Europa         França  0,38             0,98          "500.563"   
4 2022  Europa         Itália  0,31             0,19          "228.123"   
5 2023  América do Sul Brasil  0,77             0,88          " 59.994"   
6 2023  América do Sul Uruguai 0,32             0,29          "  8.173"   
7 2023  Europa         França  1,38             2,31          " 22.916"   
8 2023  Europa         Itália  0,95             0,49          " 27.102"   
# ℹ 1 more variable: Obitos_maximo <chr>

flextable

flextable(letalidade)
Tab1

Editando com o que já sabemos

tab1 <- flextable( letalidade) %>% 
  autofit() %>% 
  align(align="r", part="all") %>% 
  align(align="c", j=c(1,2),  part="all") %>% 
  bold(part="header") %>% 
  bold(j=c(1,2)) %>% 
  bg(bg="lightgrey", j=1, part="all") %>% 
  bg(bg="grey", j=c(2,3), part="all") %>% 
  hline(i=c(2,4,6)) %>% 
  vline(j=c(1,2,3)) %>% 
  set_header_labels( 
  Country="País", 
  letalidade_media="Letalidade Média Diária",
  desvio_padrao="Desvio Padrão",
  Casos_maximo="Máximo de casos em 24h", 
  Obitos_maximo="Máximo de óbitos em 24h")
  
  
tab1

Tab2

Mesclando celulas

tab2 <- tab1 %>% 
  merge_v(j=c(1,2)) 

tab2
Tab3
  • Procure sobre a função fix_border_issues()

Coloração condicional

tab3 <- tab2 %>% 
  bg(i = ~ Country =="Brasil" ,  # nome da coluna original 
     j = c(6,7),
     bg="red")

tab3
Tab4

Coloração condicional

tab4 <- tab2_num  %>% 
 bg(i = ~ Casos_maximo >200000 ,  # nome da coluna original 
     bg="yellow") %>% 
  colformat_double(decimal.mark = ",",
                   digits = 2) %>% 
  colformat_int(big.mark = ".")

tab4
Tab3

COMENTÁRIOS

  • Tem que ser o nome original na base! Sugestão: deixe para mudar os nomes só no final

  • Vantagem: Não preciso dizer o número das linhas , ele vai atualizar baseado no valor do banco! Isso é mais reprodutível.

  • PARA CONDICIONAR SOBRE OS NÚMEROS, O R TEM QUE ESTAR RECONHECENDO COMO NUMÉRICO

    • Por isso removi o mutate_if() que haviamos feito no início da manipulação.
    • Há possibilidade de mudar isso na própria tabela.

Tarefa do fim do módulo

  • Entregar uma tabela em Word (.docx) criada com o flextable com uma base de dados do seu interesse. O código .Rmd deve ser entregue juntamente com a tabela gerada.

  • Sugiro não utilizar as mesmas bases que usamos aqui na aula, a não ser que faça uma abordagem muito diferentes das já feitas.

  • Para chegar na tabela, você deve usar funções de manipulações de dados de acordo como seu objetivo. Deve conter pelo menos alguma manipulação com o filter() e com o mutate(), no mínimo.

  • Deve conter pelo menos 3 funções de formatação da tabela.

  • Defafio: usar funções novas de formatação ou manipulação não apresentadas na aula.

Até o próximo módulo!